'''
coding:utf-8
@Software:PyCharm
@Time:2022/7/13 17:43
@Author:liuyi
'''
from functools import reduce

# 使用reduce 取出lst里的数字 --》12349
lst = ["a", '1', '2bb', '234', "", '9']
def func01(x, y):
    if x.isdigit() and y.isdigit():
        return x + y
    elif x.isdigit():
        return x
    elif y.isdigit():
        return y
print(int(reduce(func01, lst)))

# 正数在前负数在后 ， 正数从小到大 ， 负数从大到小
list1=[7, -8, 5, 4, 0, -2, -5]
print(sorted(list1, key=lambda x: x*-10 +10 if x <= 0 else x))



# 排序规则 小写 < 大写 < 奇数 < 偶数
"""
首先判断是数字还是字母，由于字母的ASCII都比数字的ASCIID大，
其ASCII大小就不改变(小写>大写)。利用改变数字对应的ASCII值的大小来改变排序，
如果是奇数，ASCII就加上100再乘-1，是偶数就加上200再乘-1。这样按照改变后
的ASCII进行升序排列的结果为，偶数-奇数-大写-小写。再利用reverse参数对其降序排序
"""
s ='asdf234GDSdsf23'
def num_sort(num):
    if num.isdigit():
        # 判断是奇数
        if int(num) % 2 == 1:
            # 获取ASCII值
            return (ord(num)+100)*-1
        else:
            return (ord(num)+200)*-1
    return ord(num)
print(''.join(sorted(s,key=num_sort,reverse=True)))
